
//list.xmlのXMLオブジェクト
var listXML;

//<記事のタイトル>.xmlのXMLオブジェクト
var articleXML;

//単語の通し番号。記事内全て。
var wordId;


//■XMLファイルの読み込み
//fileURL : 
//type : レスポンス関数の区別
//        0 : XMLファイルリストを表示
//        1 : XMLファイルの内容を・・・TODO
function loadXML(fileURL , type){
  var xmlhttp;
  try{
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e) {
    try{
	xmlhttp = new ActionXObject("Microsoft.XMLHTTP");
    }
    catch(e){
	xmlhttp = undefined;
    }
  }
  if(!xmlhttp){
	xmlhttp = new XMLHttpRequest();
  }

  //通信を行う
  xmlhttp.open("GET" , fileURL , true);

  //受信時に起動するイベント
  xmlhttp.onreadystatechange = function(){ 
    //readyState値は4で受信完了
    if (xmlhttp.readyState==4){ 
	//レスポンスを取得
	res  = xmlhttp.responseXML;
	//■type=0 : 左キャンバスにセット
	if(type===0){
//alert("loadXML/レスポンス受けとりました。タイプ0です。");//デバック用
	  listXML = res;
	  var fileList = listXML.getElementsByTagName("FILE");
	  for(i=0 ; i<fileList.length ; i++){
	    var t = fileList[i].firstChild.nodeValue;
	    document.getElementById("leftCanvas").innerHTML += ("■<a href='#' onClick='setArticle("+i+")'>"+t+ "</a><br>");
	  }
	}

	//■type=1 : メインキャンバスにセット
	else if(type===1){
//alert("loadXML/レスポンス受けとりました。タイプ1です。");//デバック用
	  articleXML = res;
	  //タイトルをセット
	  document.getElementById("title").innerHTML += articleXML.getElementsByTagName("TITLE")[0].firstChild.nodeValue;
	  //本文をセット
	  document.getElementById("description").innerHTML += xmlValue(articleXML.getElementsByTagName("ORIGINAL")[0]);
	}
    }
  }
  xmlhttp.send(null);
}

//■■左キャンバスに，タイトル一覧をセットします。
function setList(){
//alert("setList/START");//デバック用
  loadXML("./xml/article/list.xml" , 0);
}

//■■メインキャンバスに，タイトルと記事をセットします。
//var articleXMLもセットします。
function setArticle(titleNo){
  //記事を初期化
  articleXML = null;
  document.getElementById("title").innerHTML = "";
  document.getElementById("description").innerHTML = "";

  var url = "./xml/article/doc/"+listXML.getElementsByTagName("FILE")[titleNo].firstChild.nodeValue+".xml";
  loadXML(url , 1);
}

//■日本語の記事を挿入。
function setJPN(){
    document.getElementById("description").innerHTML = articleXML.getElementsByTagName("JPN")[0].childNodes[0].nodeValue;
}
function setCHN(){
    document.getElementById("description").innerHTML = articleXML.getElementsByTagName("CHN")[0].childNodes[0].nodeValue;
}







//■■DOMノードから，タグを取り除いてTEXTに変換
var DOM_ELEMENT_NODE = 1;
var DOM_ATTRIBUTE_NODE = 2;
var DOM_TEXT_NODE = 3;
var DOM_CDATA_SECTION_NODE = 4;
var DOM_DOCUMENT_NODE = 9;
var DOM_DOCUMENT_FRAGMENT_NODE = 11;

function xmlValue(node) {
　if (!node) {
　　return '';
　}

　var ret = '';
　if (node.nodeType == DOM_TEXT_NODE ||
　　　node.nodeType == DOM_CDATA_SECTION_NODE ||
　　　node.nodeType == DOM_ATTRIBUTE_NODE) {
　　ret += node.nodeValue;

　} else if (node.nodeType == DOM_ELEMENT_NODE ||
　　　　　　 node.nodeType == DOM_DOCUMENT_NODE ||
　　　　　　 node.nodeType == DOM_DOCUMENT_FRAGMENT_NODE) {
　　for (var i = 0; i < node.childNodes.length; ++i) {
　　　ret += arguments.callee(node.childNodes[i])+" ";
　　}
　}
　return ret;
}





//■タグモードのセット
function setTagMode(){
  //リセット
  document.getElementById("description").innerHTML = "";
  wordId = 0;
  //文に分割
  var sentenceNode = articleXML.getElementsByTagName("ORIGINAL")[0].getElementsByTagName("sentence");

  for(i=0 ; i<sentenceNode.length ; i++){

//    document.getElementById("description").innerHTML += "<div id='waku'></div><br><hr><div class='sentence' id='"+i+"'>"+setSentence(sentenceNode[i])+"</div><br>";

    document.getElementById("description").innerHTML += "<div style='clear: both;'></div><div id='waku'></div>";

    setSentence(sentenceNode[i]);

    document.getElementById("description").innerHTML += "<br>";

  }
//alert(document.getElementById("description").innerHTML);//デバック用


}








//allWords
//プロパティは，
//word,tag,mean


var allWords = new Object();


//■文にタグモードにする。
//文のノードをうけとる。
function setSentence(node) {
　if (!node) {
　　return '';
　}

　var ret = '';

  //テキストの場合
　if (node.nodeType == DOM_TEXT_NODE ||
　　　node.nodeType == DOM_CDATA_SECTION_NODE ||
　　　node.nodeType == DOM_ATTRIBUTE_NODE) {

      //テキストを確保し，<sentense>にぶるかるまで，親ノードを見ていく。
      //node : 単語のテキストノード
      allWords[wordId.toString()] = new Object();
      allWords[wordId.toString()].word = node.nodeValue;
      allWords[wordId.toString()].tag = new Object();
      var tagNode = node.parentNode;

      var tagLength = 0;

      while(true){
        var nodeName = tagNode.nodeName;
        if(nodeName == "mean"){
          var meanIdNode = tagNode.getAttributeNode("id");
//alert("meanIdNode="+meanIdNode);//TODO nullの場合はどうなるのか調べる！
          if(meanIdNode != null) allWords[wordId.toString()].mean = meanIdNode.nodeValue;
	  else allWords[wordId.toString()].mean = null;
        }
        else{
          allWords[wordId.toString()].tag[tagLength.toString()] = nodeName;
	  tagLength++;
        }
        //次のノードへ。
        tagNode = tagNode.parentNode;
        if(tagNode.nodeName == "sentence") break;
     }

//     if(allWords[wordId.toString()].tag[0] != "sign") ret += "<a href='javascript:;' style='text-decoration: none;' onclick='showTagWindow0("+wordId.toString()+")'><div  class='wordbox' id='"+wordId.toString()+"'>";

     if(allWords[wordId.toString()].tag[0] != "sign") ret += "<div  class='wordbox' id='"+wordId.toString()+"'>";

     else ret += "<div  class='signbox' id='"+wordId.toString()+"'>";



     if(allWords[wordId.toString()].tag[0] != "sign") ret += "<div class='word'>"+allWords[wordId.toString()].word+"</div>";
     else ret += "<div>"+allWords[wordId.toString()].word+"</div>";

      ret += "<div class='tag' id='t"+wordId+"'>";

      if(allWords[wordId.toString()].mean != null) ret += allWords[wordId.toString()].mean + "<br>";

if(allWords[wordId.toString()].tag[0] != "sign"){
      ret += "<font color='#0000FF'>";
      for(var i=0 ; i<tagLength ; i++){
	ret += allWords[wordId.toString()].tag[i.toString()] + "<br>";
      }
      ret += "</font>";
}

      ret += "</div></div>";
//if(allWords[wordId.toString()].tag[0] != "sign") ret += "</a>";



      document.getElementById("description").innerHTML += ret;

      var divX = document.getElementById(wordId.toString()).offsetLeft;
      if(divX > 500) document.getElementById("description").innerHTML += "<div style='clear: both;'></div>";

      wordId++;
　}

  //それ以外の場合
  else if (node.nodeType == DOM_ELEMENT_NODE ||
　　　　　　 node.nodeType == DOM_DOCUMENT_NODE ||
　　　　　　 node.nodeType == DOM_DOCUMENT_FRAGMENT_NODE) {
　　for (var i = 0; i < node.childNodes.length; ++i) {
      arguments.callee(node.childNodes[i]);
　　}
　}
//　return ret;

}


//■タグ付け後に，wordbox.tagを書き換える。





